package pl.pw.eiti.mkoi.squfof;


public class Calculator {
	
	@SuppressWarnings("unused")
	private static final String LOG_TAG = Calculator.class.getSimpleName();
	
	private Factorisation mFactorisation;
	
	private Integer mCurrentValue;
	
	public Calculator() {
		mFactorisation = new SqufofFactorisation();
		clear();
	}
	
	public void clear() {
		mCurrentValue = 0;
	}
	
	public void add(Integer value) {
		mCurrentValue += value;
	}
	
	// tylko dla naturalnych
	public void subtract(Integer value) throws ArithmeticException {
		if (value > mCurrentValue) throw new ArithmeticException("Odejmowanie większej liczby od mniejszej");
		mCurrentValue -= value;
	}
	
	public void multiply(Integer value) {
		mCurrentValue *= value;
	}
	
	// dzielenie całkowite
	public void divide(Integer value) throws ArithmeticException {
		if (value == 0) throw new ArithmeticException("Dzielenie przez 0");
		mCurrentValue /= value;
	}
		
	public Integer getValue() {
		return mCurrentValue;
	}
	
	public void setValue(Integer value) throws ArithmeticException {
		if (value < 0) throw new ArithmeticException("Nowa wartość nie może być ujemna");
		mCurrentValue = value;
	}
	
	public Integer getFactor() {
		return mFactorisation.getFactor(mCurrentValue);
	}
	
	@Override
	public String toString() {
		return mCurrentValue.toString();
	}
	
}
